"""舵机应用"""
import pyb
from pyb import *
import time
import pyb
from pyb import Pin
from pyb import Timer

# 舵机
class my_Servo():
    def __init__(self, Servo_id=1):
        # 舵机旋转角度  正负数代表为正反装,  舵机供电必须满足5V 否则无法正常工作
        # 定义舵机对象方式1
        self.s1 = Servo(Servo_id)  # 定义 舵机对象  (x1, x2, x3, x4)   接线 5V  +GND
        # 定义舵机方式2
        self.s2 = Pin('X2', Pin.OUT_PP)
        # 定义一个运行指示灯
        self.LED3 = pyb.LED(3)

    # 内存返还
    def __del__(self):
        Pin('X1', Pin.OUT_PP).low()
        self.LED3.off()
        self.s2.low()

    # 舵机在指定时间内完成角度(Servo_angle)的转向 默认转10度  Servo_time为指定时间 默认为1秒
    def Servo_time_angle(self, Servo_angle=10, Servo_time=1000):
        self.LED3.on()
        self.s1.angle(Servo_angle, Servo_time)    # 在特定时间内旋转到指定角度  2000为2秒
        self.LED3.off()

    # 舵机旋转到指定角度
    def Servo_angle(self, Servo_angle=10):
        self.LED3.on()
        self.s1.angle(Servo_angle)  # 旋转角度  负数为正转, 正数为反转,
        # self.s1.speed(100)     #以指定的速度继续转动
        self.LED3.off()

    # 与前面方法效果一样
    def Servo_angle_speed(self, Servo_speed=10):
        self.LED3.on()
        # self.s1.angle(-100)
        self.s1.speed(Servo_speed)     #以指定的速度继续转动
        self.LED3.off()
